package biblio;

/**
 * Classe de gestion du controle du cas d'utilisation
 * "Rechercher par mot clé".
 * 
 * @author IUT, refactor� par E. Ceret
 * @version 2.0
 * 
 */
public class CtrRechercherParMotCle {

	// ************************************************************************************************************
	// Constantes
	// ************************************************************************************************************

	private static final long serialVersionUID = 1L;
	
	// ************************************************************************************************************
	// Attributs
	// ************************************************************************************************************

	private Bibliotheque _bibliotheque;

	// ************************************************************************************************************
	// Constructeur
	// ************************************************************************************************************

	/**
	 * Constructeur.
	 * @param bibliotheque biblioth�que � laquelle ce contr�leur est li�.
	 */
	public CtrRechercherParMotCle(Bibliotheque bibliotheque) {

		// Liaison avec l'appli "Bibliotheque"
		this.lierBibliotheque(bibliotheque);
	} // Fin Constructeur

	// ************************************************************************************************************
	// M�thodes priv�es
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Accesseurs

	private Bibliotheque getBibliotheque() {
		return _bibliotheque;
	}
	
	// ------------------------------------------------------------------------------------------------------------
	// Affecteurs

	private void lierBibliotheque(Bibliotheque bibliotheque) {
	    _bibliotheque = bibliotheque;
	} // Fin lierBibliotheque
	
	// ************************************************************************************************************
	// M�thodes publiques
	// ************************************************************************************************************

	// ------------------------------------------------------------------------------------------------------------
	// Traitements

	/**
	 * Recherche d'ouvrages � partir de la saisie d'un mot clé
	 */
	public void rechParMotCle() {
		EntreesSorties.afficherTitre("Recherche par mot clé");

		// Saisie du mot clé
		String motcl = EntreesSorties.lireChaine("Mot clé :");

		// V�rification l'existence du mot clé
		MotCle motcle = this.getBibliotheque().getMotCle(motcl);
		
		if (motcle == null) { // L
			EntreesSorties.afficherMessage("Mot clé inconnu.");
		} else {
			// Cr�ation de la vue
			VueMotCle vueMotCle = new VueMotCle(motcle);

			// Affichage du mot clé
			vueMotCle.afficherTout();

			// Suppression de la vue vueExemplaire comme Observatrice de l'objet lecteur
			vueMotCle.elimineObserveur();
			
			// Remise � null de la variable, ce qui aura pour effet de d�truire l'objet vueMotCle (pas
			// d'autre variable qui le r�f�rence)
			vueMotCle = null;
		}
	} // Fin consLecteur

} // Fin Classe CtrConsLecteur
